package com.itheima.logger;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component
@Aspect
@Order(1)
public class Logger1 {
    @Pointcut("execution(* com.itheima.service.impl.DeptServiceImpl.*(*))")
    public void pt() {
    }
    @Around("pt()")
    public Object m6(ProceedingJoinPoint pjp) throws Throwable {
        long l = System.currentTimeMillis();
        Object object = null;
        try {
            object = pjp.proceed(); // 执行目标方法。
        } catch (Exception e) {
            // 处理目标方法执行过程中抛出的异常。
            e.printStackTrace();
        } finally {
            // 无论方法执行成功还是失败，都会执行此块代码
            long l1 = System.currentTimeMillis();
            System.out.println(l1-l);
        }
        return object; // 返回目标方法的执行结果。
    }
}
